home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d17 / sfnec.arc / CHR-DEMO.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1984-11-15  |  5.9 KB  |  157 lines

  1. 10  '***************************************************************************
  2. 20  '*                                                                         *
  3. 30  '*                A PROGRAM TO DEMONSTRATE PRINT_CHARACTERS                *
  4. 40  '*                                                                         *
  5. 50  '*                           (C) COPYRIGHT 1984                            *
  6. 60  '*                                   by                                    *
  7. 70  '*                             Michael L Hoyt                              *
  8. 80  '*                                                                         *
  9. 90  '***************************************************************************
  10. 100  '
  11. 110  '************************ CHECK DISPLAY CARDS *****************************
  12. 120  '
  13. 130  DEF SEG=&H40                        'segment address of display information
  14. 140  MODE=PEEK(&H49)                     'offset of current mode
  15. 150  DEF SEG                             're-establish BASIC'S data segment
  16. 160  IF MODE=0 OR MODE=1 OR MODE=4 OR MODE=5 THEN W=0 ELSE W=20  'place display
  17. 170  '
  18. 180  '***************************** INITIALIZE *********************************
  19. 190  '
  20. 200  IF W=0 THEN WIDTH 40 ELSE WIDTH 80  'set display width
  21. 210  SCREEN 0,1,0,0: KEY OFF: COLOR 7,0,0: CLS
  22. 220  GOSUB 1410                          'load interface to PRINT_SCREEN
  23. 230  '
  24. 240  '*************************** OPENING SCREEN *******************************
  25. 250  '
  26. 260  LOCATE 3,W+11,0                     'cursor off
  27. 270  PRINT "DEMONSTRATION PROGRAM"
  28. 280  LOCATE 4,W+20: PRINT "for"
  29. 290  COLOR 15: PRINT
  30. 300  LOCATE ,W+14: PRINT "PRINT_CHARACTERS"
  31. 310  COLOR 7
  32. 320  LOCATE ,W+17: PRINT "with the"
  33. 330  COLOR 15: PRINT
  34. 340  LOCATE ,W+17: PRINT "NEC 8023A"
  35. 350  COLOR 7
  36. 360  LOCATE ,W+13: PRINT "dot matrix printer"
  37. 370  LOCATE 18,1
  38. 380  PRINT "(c) Copyright 1984"
  39. 390  PRINT "        by"
  40. 400  PRINT "  Michael L Hoyt"
  41. 410  LOCATE 24,W+8: COLOR 23
  42. 420  PRINT "Press any key to continue";
  43. 430  COLOR 15
  44. 440  A$=INKEY$: IF A$="" THEN 440
  45. 450  '
  46. 460  '******************* SET DISPLAY OF ASCII CHARACTERS **********************
  47. 470  '
  48. 480  CLS
  49. 490  COLOR 7
  50. 500  LOCATE 1,W+2
  51. 510  PRINT "HEX  0 1 2 3 4 5 6 7 8 9 A B C D E F"
  52. 520  LOCATE ,W+2
  53. 530  PRINT "   KEYTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENCLOSE"
  54. 540  LOCATE ,W+2
  55. 550  PRINT " 2 OPEN   ! " CHR$(34) " # $ % & ' ( ) * + , - . / OPEN"
  56. 560  LOCATE ,W+2
  57. 570  PRINT " 3 OPEN 0 1 2 3 4 5 6 7 8 9 : ; < = > ? OPEN"
  58. 580  LOCATE ,W+2
  59. 590  PRINT " 4 OPEN @ A B C D E F G H I J K L M N O OPEN"
  60. 600  LOCATE ,W+2
  61. 610  PRINT " 5 OPEN P Q R S T U V W X Y Z [ \ ] ^ _ OPEN"
  62. 620  LOCATE ,W+2
  63. 630  PRINT " 6 OPEN ` a b c d e f g h i j k l m n o OPEN"
  64. 640  LOCATE ,W+2
  65. 650  PRINT " 7 OPEN p q r s t u v w x y z { | } ~ " CHR$(127) " OPEN"
  66. 660  LOCATE ,W+2
  67. 670  PRINT "   PRESETSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUND<0xB6!>"
  68. 680  LOCATE ,W+2
  69. 690  PRINT " 8 OPEN <UNK! {0080}> END FOR NEXT DATA INPUT DIM READ LET GOTO RUN IF RESTORE GOSUB RETURN REM OPEN"
  70. 700  LOCATE ,W+2
  71. 710  PRINT " 9 OPEN STOP PRINT CLEAR LIST NEW ON WAIT DEF POKE CONT <0x9A!> <0x9B!> OUT LPRINT LLIST <0x9F!> OPEN"
  72. 720  LOCATE ,W+2
  73. 730  PRINT " A OPEN WIDTH ELSE TRON TROFF SWAP ERASE EDIT ERROR RESUME DELETE AUTO RENUM DEFSTR DEFINT DEFSNG DEFDBL OPEN"
  74. 740  LOCATE ,W+2
  75. 750  PRINT "   PRESETSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUND<0xB6!>"
  76. 760  LOCATE ,W+2
  77. 770  PRINT " B OPEN LINE WHILE WEND CALL <0xB4!> <0xB5!> <0xB6!> WRITE OPTION RANDOMIZE OPEN CLOSE LOAD MERGE SAVE COLOR OPEN"
  78. 780  LOCATE ,W+2
  79. 790  PRINT "   OPEN                                 OPEN"
  80. 800  LOCATE ,W+2
  81. 810  PRINT " C OPEN CLS MOTOR BSAVE BLOAD SOUND BEEP PSET PRESET SCREEN KEY LOCATE <0xCB!> TO THEN TAB( STEP OPEN"
  82. 820  LOCATE ,W+2
  83. 830  PRINT "   OPEN                                 OPEN"
  84. 840  LOCATE ,W+2
  85. 850  PRINT " D OPEN USR FN SPC( NOT ERL ERR STRING$ USING INSTR ' VARPTR CSRLIN POINT OFF INKEY$ <0xDF!> OPEN"
  86. 860  LOCATE ,W+2
  87. 870  PRINT "   OPEN                                 OPEN"
  88. 880  LOCATE ,W+2
  89. 890  PRINT "   PRESETSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUND<0xB6!>"
  90. 900  LOCATE ,W+2
  91. 910  PRINT " E OPEN <0xE0!> <0xE1!> <0xE2!> <0xE3!> <0xE4!> <0xE5!> > = < + - * / ^ AND OR OPEN"
  92. 920  LOCATE ,W+2
  93. 930  PRINT " F OPEN XOR EQV IMP MOD \ <UNK! {00F5}> <UNK! {00F6}> <UNK! {00F7}> <UNK! {00F8}> <UNK! {00F9}> <UNK! {00FA}> <UNK! {00FB}> <UNK! {00FC}> <UNK! {FD20}><UNK! {FE20}><UNK! {FF20}>OPEN"
  94. 940  LOCATE ,W+2
  95. 950  PRINT "   SCREENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENTHENLOAD";
  96. 960  '
  97. 970  '************************** DISPLAY PROMPT ********************************
  98. 980  '
  99. 990  LOCATE 25,W+9: PRINT "Normal  -  Italics  -  Quit";
  100. 1000  COLOR 15: LOCATE 25,W+9: PRINT "N";
  101. 1010  LOCATE 25,W+20: PRINT "I";
  102. 1020  LOCATE 25,W+32: PRINT "Q";
  103. 1030  COLOR 7
  104. 1040  LOCATE 24,W+15: PRINT "To print, PRESS";
  105. 1050  '
  106. 1060  '*************************** GET USER RESPONSE ****************************
  107. 1070  '
  108. 1080  LOCATE 1,1,0                       'cursor off
  109. 1090  A$=INKEY$: IF A$="" THEN 1090      'wait for response
  110. 1100  IF A$="i" OR A$="I" THEN 1240      'do italics print-screen
  111. 1110  IF A$="n" OR A$="N" THEN 1170      'do normal print-screen
  112. 1120  IF A$="q" OR A$="Q" THEN 1330      'end up
  113. 1130  BEEP: GOTO 1090
  114. 1140  '
  115. 1150  '********************** NORMAL TEXT SCREEN PRINT *************************
  116. 1160  '
  117. 1170  LPRINT CHR$(27) CHR$(62)           'set printer to unidirectional
  118. 1180  GOSUB 1510                         'call interface to PRINT_SCREEN
  119. 1190  LPRINT CHR$(12)                    'form feed to eject an 11" sheet
  120. 1200  GOTO 990                           'done, so return
  121. 1210  '
  122. 1220  '********************** ITALICS TEXT SCREEN PRINT ************************
  123. 1230  '
  124. 1240  LPRINT CHR$(27) CHR$(62)           'set printer to unidirectional
  125. 1250  LPRINT CHR$(18)                    'set printer (PRNT-CHR) to italics
  126. 1260  GOSUB 1510                         'call interface to PRINT_SCREEN
  127. 1270  LPRINT CHR$(18)                    'reset printer(PRT-CHR) to normal
  128. 1280  LPRINT CHR$(12)                    'form feed to eject an 11" sheet
  129. 1290  GOTO 990                           'done, so return
  130. 1300  '
  131. 1310  '********************************* END ***********************************
  132. 1320  '
  133. 1330  CLS
  134. 1340  LOCATE 3,10
  135. 1350  PRINT "End of demonstration..."
  136. 1360  LOCATE 10,1,1                      'cursor back on
  137. 1370  END
  138. 1380  '
  139. 1390  '********************* INTERFACE TO PRINT_SCREEN ************************
  140. 1400  '
  141. 1410  DEF SEG                            'establish BASIC'S data segment
  142. 1420  DIM PRTSC%(3)                      'define variable to hold code string
  143. 1430  FOR X=0 TO 3                       'load the code into the string
  144. 1440  READ PRTSC%(X)                     'read data statement
  145. 1450  NEXT X                             'loop until done
  146. 1460  RETURN                             'done, so return
  147. 1470  DATA &H8955,&HCDE5,&H5D05,&H00CB:  'interface code
  148. 1480  '
  149. 1490  '****************** CALL INTERFACE TO PRINT_SCREEN **********************
  150. 1500  '
  151. 1510  LOCATE 25,W+7: PRINT "                              ";
  152. 1520  LOCATE 24,W+15: PRINT "               ";
  153. 1530  DEF SEG                            'set BASIC'S data segment
  154. 1540  SUBRT%=VARPTR(PRTSC%(0))           'point to code string(variable)
  155. 1550  CALL SUBRT%                        'call the code interface
  156. 1560  RETURN                             'done, so return
  157.